package org.dei.perla.sys.device.channel.frame.header;

import org.dei.perla.sys.device.channel.frame.address.FrameAddress;

/**
 * Classe astratta, rappresenta l'header di un frame.
 *
 */
public abstract class FrameHeader implements Cloneable {

	/**
	 * Indirizzo sorgente del frame
	 */
	protected FrameAddress pSourceAddress;

	/**
	 * Indirizzo destinazione del frame
	 */
	protected FrameAddress pDestAddress;

	/**
	 * Imposta l'indirizzo sorgente
	 * @param parSourceAddress 
	 */
	public void setSourceAddress(FrameAddress parSourceAddress) {
		this.pSourceAddress = parSourceAddress;
	}

	/**
	 * Imposta l'indirizzo destinazione
	 * @param parDestinationAddress 
	 */
	public void setDestinationAddress(FrameAddress parDestinationAddress) {
		this.pDestAddress = parDestinationAddress;
	}

	/**
	 * Restituisce l'indirizzo sorgente
	 * @return 
	 */
	public FrameAddress getSourceAddress() {
		return this.pSourceAddress;
	}

	/**
	 * Restituisce l'indirizzo destinazione
	 * @return 
	 */
	public FrameAddress getDestinationAddress() {
		return this.pDestAddress;
	}

	/**
	 * Restituisce un duplicato esatto dell'oggetto
	 */
	public abstract FrameHeader clone();
	
	/**
	 * Restituisce una rappresentazione testuale dell'oggetto
	 */
	public abstract String toString();
}
